﻿using System;
using System.Runtime.Serialization;

namespace SW2A311_Lib
{
    /// <summary>
    /// Indkapslings-klasse der har en string til en chat besked og en string med navnet på den bruger der sender beskeden.
    /// </summary>
    [Serializable()]
    public class ChatMessageEncapsulation : ISerializable
    {
        public string ChatMessageContent { get; set; } 
        public string UserName
        {
            get;
            private set;
        }
        /// <summary>
        /// Standard constructor til indkapslings-klasse objekter.
        /// </summary>
        /// <param name="userNameIn"></param>
        public ChatMessageEncapsulation(string userNameIn)
        {
            UserName = userNameIn;
        }
        /// <summary>
        /// Klasse der bruges til serializering af objektet.
        /// </summary>
        /// <param name="info"></param>
        /// <param name="ctxt"></param>
        public ChatMessageEncapsulation(SerializationInfo info, StreamingContext ctxt)
        {
            this.ChatMessageContent = (string)info.GetValue("ChatMessageContent", typeof(string));
            this.UserName = (string)info.GetValue("UserName", typeof(string));
        }
        /// <summary>
        /// Metode til deserializering af objektet.
        /// </summary>
        /// <param name="info"></param>
        /// <param name="ctxt"></param>
        public virtual void GetObjectData(SerializationInfo info, StreamingContext ctxt)
        {
            info.AddValue("ChatMessageContent", this.ChatMessageContent);
            info.AddValue("UserName", this.UserName);
        }

    }
}
